Fakultät für Physik¶

Physikalisches Praktikum P2 für Studierende der Physik¶

Versuch P2-72, 73, 83 (Stand: März 2024)

Raum F2-19

Gammaspektroskopie¶

Name: Alhelo Vorname: Fadi E-Mail: uylex@student.kit.edu

\begin{equation*} \begin{split} &\\ &\\ \end{split} \end{equation*}

Name: Ji Vorname: Tony E-Mail: uvsvo@student.kit.edu

\begin{equation*} \begin{split} &\\ &\\ &\\ \end{split} \end{equation*}

Gruppennummer: DO 14

\begin{equation*} \begin{split} &\\ &\\ &\\ \end{split} \end{equation*}

Betreuer: __________________

\begin{equation*} \begin{split} &\\ &\\ &\\ \end{split} \end{equation*}

Versuch durchgeführt am: __________________


Beanstandungen zu Protokoll Version _____:

\begin{equation*} \begin{split} &\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\ &\\ \end{split} %\text{\vspace{10cm}} \end{equation*}


Testiert am: __________________ Testat: __________________

Durchführung¶

Die Anleitung zu diesem Versuch finden Sie hier.

Aufgabe 1: Messanordnung¶

Hinweise zu Aufgabe 1 finden in der Datei Hinweise-Versuchsdurchfuehrung.md.

  • Machen Sie sich mit der Messanordnung vertraut.
  • Bearbeiten Sie hierzu die folgenden Aufgaben.

Aufgabe 1.1: Beschreibung der Messanordnung¶

  • Beschreiben Sie die Messanordnung, die Sie für diesen Versuch vorfinden in eigenen Worten.

Lösung:

Zum Messen der Strahlung der radioaktiven Proben wird diese wie in Abbildung 1.1.1 gezeigt über dem Messgerät festgespannt. Der Messgerät ist der in den Hinweisen beschriebene Szintillator und Detektormaterial. Dieses Aparat ist in der Abbildung innerhalb des silbernen Zylenders zu finden. Die in der Abbildung zu sehende Probe (der Festgespannte blaue Zylinder) ist $_{11}^{22}Na$.

Aufnahme des Aufbaus

Abbildung 1.1.1: Aufbau der Messanlage

Das gemessene Signal wird dann druch den MCA (Multichannelanalizer) durchgeleitet und dann auf dem Rechner visuell aufgetragen.

Aufnahme vom MCA

Abbildung 1.1.2: Aufnahme des MCA

Im laufe des Verscuhes wird das MCA als Oszilloskop eingesezt um den Signal zu untersuchen (genaueres dazu unter Aufgabe 1.2) und im späteren Verlauf dazu verwendet, um einen Histogramm mithilfe der Verschiedenen Signale zu erstellen.


Aufgabe 1.2: Oszilloskopische Untersuchung des Signal¶

  • Untersuchen Sie das Signal eines beliebigen radioaktiven Präparats.
  • Verwenden Sie hierzu den MCA als Oszilloskop.
  • Beschreiben Sie Ihre Beobachtungen.

Lösung:

Es wird in Abbildung 1.2.1 die Aufnahme der Gruppe Do-02 verwendet, da diese von besserer Qualität ist.

In Abbildung 1.2.1 Ist eine Aufnahme des Signales mithilfe der Osziloskop funktion zu sehen.
Die unterschiedliche Stärke der Ausschläge zeigt hierfür die unterschiedliche Energien die gemessen wurden.
Zudem sind die Zeitintervalle zwischen den einzelnen aufgenommenen Signale sehr unregelmäßig. Diese entsprechen die statistische Natur des radioactiven Zerfalls.

Aufnahme des Oszilators Gruppe Do-02

Abbildung 1.2.1: Aufnahme des Signales


Aufgabe 1.3: Spektrale Untersuchung des Signal¶

  • Untersuchen Sie zur Vorbereitung auf Aufgabe 2 die Spektren der Präparate $_{\hphantom{0}55}^{137}\mathrm{Cs}$, $_{27}^{60}\mathrm{Co}$ und $_{11}^{22}\mathrm{Na}$.
  • Verwenden Sie hierzu den MCA in seiner eigentlichen Eigenschaft als Spektrumanalysator.
  • Bestimmen Sie einen einheitlichen dynamischen Bereich, des MCA mit dem Sie alle folgenden Spektren aufzeichnen werden.

Lösung:

In der Abbildung 1.3.1 sind die einzelne Messwerte über einem Histogramm aufgetragen. Durch diese Verarbeitung des Signals, typische Verläufe sichtbar.
In Aufgabe2.2 wird auf diese genauer eingegangen.

Zum bestimmen des Einheitlichen Berieches wurde die Messung mit den Präparate $_{55}^{137}\mathrm{Cs}$, $_{27}^{60}\mathrm{Co}$ und $_{11}^{22}\mathrm{Na}$ durchgeführt. Unter anlegen verschiedener Spannungen ist zu erkennen, dass sich die Aufgenommene Muster stauchen oder strecekn. Dies sieht man bei dem Vergleichen der verschiedenen Abbildungen.Zum festlegen der Spannung wird die Spannung gewählt bei dem eins der Spekten der Präparate and dem rechten Rand des Messbereichs kommt.
Es wird bei alle Messungen eine Spannung von $683 V$ angelegt.

Aufnahme des Histogramms für die Cs Probe

Abbildung 1.3.1: Histogramm der $_{11}^{22}Na$-Probe

Aufnahme des Histogramms für die Natrium Probe

Abbildung 1.3.2: Histogramm der $_{55}^{137}Cs$-Probe

Aufnahme des Histogramms für die Cobalt Probe

Abbildung 1.3.3: Histogramm der $_{27}^{60}Co$-Probe


Aufgabe 2: Analyse der Impulshöhenspektren¶

Hinweise zu Aufgabe 2 finden in der Datei Hinweise-Versuchsdurchfuehrung.md.

  • Analysieren Sie die Impulshöhenspektren der Präparate $_{\hphantom{0}55}^{137}\mathrm{Cs}$, $_{27}^{60}\mathrm{Co}$ und $_{11}^{22}\mathrm{Na}$.
  • Bearbeiten Sie hierzu die folgenden Aufgaben.

Aufgabe 2.1: Bestimmung des Untergrunds ohne Präparat¶

  • Führen Sie eine Messung ohne Präparat durch, um ein Spektrum des Untergrunds zu erhalten, der jeder weiteren Messung unterliegt.
  • Notieren Sie sich die Zeitspanne, in der Sie das Spektrum aufgenommen haben.

Vorbereitung¶

Hintergrundstrahlung ist überall in der Umwelt vorhanden und stammt aus natürlichen Quellen wie kosmischer Strahlung, radioaktiven Isotopen in der Umgebung (im Boden oder auch in dem Menschlichem körper) und andere Quellen.
Um die Genauigkeit der Messung zu erhöhen, muss man diese gemessene Untergrundstrahlung von den Messwerten der Präparate zunächst abziehen.

Durchführung¶

Um den Untergrunds Spektrum des Versuches zu erhalten wurde die untenstehende Messung durchgeführt. Die Messung entstand under einer Messdauer von $t=6\text{min}$.
Diese zeit wurde auch bei den anderen Versuchen (mit der Ausnahme der Cobalt Messung) verwendet.

Messung ohne Probe

Abbildung 2.1: Untergrund Spektrum ohne präparat


Aufgabe 2.2: Bestimmung der Impulshöhenspektren verschiedener Präparate¶

  • Führen Sie eine Messung für jedes der oben angegebenen Präparate durch.
  • Notieren Sie sich die Zeitspanne, in der Sie das jeweilge Spektrum aufgenommen haben.
  • Charakterisieren Sie die Spektren, indem Sie alle Strukturen, die Sie darin vorfinden identifizieren.
  • Fügen Sie Darstellungen der Spektren, wie gemessen, ins Protokoll ein. Für die anschließende Versuchsauswertung sollten Sie diese Spektren auf den in Aufgabe 2.1 bestimmten Untergrund korrigieren und die MCA-Kanäle mit Hilfe der in Aufgabe 2.3 bestimmten Kalibrationkonstanten auf die Energie des Photons $E_{\gamma}$ kalibrieren.

Vorbereitung¶

Detektieren von $\gamma$-Quanten¶

Da ungeladene $\gamma$-Quanten nicht direkt Atome ionisieren können und keine Coulombwechselwirkungen erzeugen, muss deren Nachweis durch vorhergehende Wechselwirkungen mit Materie erfolgen.
Für den Versuch sind folgende Phänomen:

  • Photoeffekt:
    Bei dem Photoeffekt absorbiert ein Elektron einfallende Photonen und wird dadurch aus dem Atom ausgelöst. Damit dieseer Prozess stattfinden kann, muss die Energie des Photons mindestens die Bindungsenergie des jeweiligem Elektron entsprechen.

    Da hier die Impulserhaltung gelten muss, und dass das Photon nach dem Stoß vollständig absorniert wird, muss eine Wechselwirkung mit dem Kern hier stattfinden.
    Aufgrund dieser Wechselwirkung mit dem Kern findet der Photoeffekt am wahrscheinlichsten bei Elektron in Kernnähe statt.

    Feynman Diagramm Photo

    Abbildung 2.2.1: Feynman Diagramm zum Photoeffekt

  • Comptonstreuung:
    Bei der Comptonstreuung überträgt das $\gamma$-Quant einen Teil seines Impulses auf ein sehr schwach gebundenes Elektron eines Atoms. Dieses ”quasifreie“ Elektron erhält einen Teil der Energie des Photons und verlässt die Atomhülle. Durch den unelastischen Stoß verliert das Photon an Energie und ändert seine Richtung. Der maximale Energieübertrag liegt bei einem Streuungswinkel des Photons von $180\degree$.

    Feynman Diagramm Compton

    Abbildung 2.2.2: Feynman Diagramm zur Comptonstreuung

Verläufe der Signale¶
  • Photopeak:
    Ein Photopeak entsteht, wenn ein Gamma-Quant einen Photoeffekt auslöst. Hierbei ist eigentlich ein senkrechter Strich im Spektrum zu erwarten, jedoch erhält man aufgrund der Messungenauigkeit eine Gaußkurve.

  • Comptonkante:
    In diesem Breich handelt es sich um die Comptonstreuung eines Gammaquants. Die Energie ist hier vom Rückstreuwinkel abhängig. Auch hier ist eine scharfe Kante zu erwarten. Wie die Abbildungen 1.3.1 bis 1.3.3 aber zeigen, sieht die Kante nicht wie die erwartete Heavysidefunktion aus. Diesen Prozess wird bei Energien von $100keV$ bis $10MeV$ erwartet.
    Die Maximale Energie ist durch folgende Formel gegeben:

    $$ E_{CK}=\frac{E_\gamma}{1+\frac{m_0c^2}{2E_\gamma}} $$

  • Rückstreupeak:
    Der Rückstreupeak entsteht aufgrund der Tatsache, dass das Präparat in alle Richtungen abstrahlt. Abgestrahlte $\gamma$-Quanten, welche mit Materie in der Umgebung wechsekwirken und eine Comptonstreuung erfhren kann dieses $\gamma$-Quant dann vom Szintillator detektiert werden.
    Der Quant besitzt die Energie $E_\gamma-E_{CK}$ und lässt sich folglich berechnen.

    $$ E_\gamma^\prime = \frac{E_\gamma}{1+\frac{E_\gamma}{m_0c^2}\cdot \left(1-\cos\theta\right)} $$

  • Pile-Up:
    Dieser Effekt ist eine folge der begrenzten Zeitauflösung des Szintillators.
    Kurz aufeinanderfolgende Photonoen können daher als ein Signal interpretiert werden. Deis führt zu dass ein viel stärkeres Signal aufgenommen wird.
    Die Zeitspanne, welche der Detektor bräuchte um die Signale unterscheiden zu können wird als Totzeit bezeichnet.
    Bei dem verwendeten Detektor ist die Totzeit genügend klein weshalb dieser Effekt vernachlässigt werden kann.

Durchfürhung¶

Es wird wie in Aufgabe 1 das Präparat aufgebaut und Eine Messung durchgeführ. Leider wurde die Messzeit nicht einheitlich gewählt (was später angesprochen wird) und die Messung für das Präparat $_{27}^{69}Co$ wurde über eine dauer von $t=8\text{min}$ aufgenommen im gegensatz zu alle anderen Messungen welche über eine Zeit von $t=6\text{min}$ gemacht wurden.
Die Messdauer von $t=6\text{min}$ wurde gewählt weil ab diese Messzeit sich das Histogramm der Messdaten keine erhebliche besserung der Qualität gezeigt hat.

Im Versuch sind folgende Diagramme dabei entstanden:

Bei den Histogrammen in Abbildung 2.2.3/5 ist der Untergrungs Spektrum noch erhalten. Für die mit Python-Code bearbeitete Diagramme wurde diese aber stehts abgezogen, auch ohne dass dies explizit erwähnt wird.

Aufnahme des Histogramms für die Cs Probe

Abbildung 2.2.3: Histogramm der $_{55}^{137}Cs$-Probe

Aufnahme des Histogramms für die Natrium Probe

Abbildung 2.2.4: Histogramm der $_{11}^{22}Na$-Probe

Aufnahme des Histogramms für die Cobalt Probe

Abbildung 2.2.5: Histogramm der $_{27}^{60}Co$-Probe

Auswertung¶

Wie in den Diagrammen unten zu sehen ist, sind alle Strukturen hier gut zu erkennen.

In [ ]:
import matplotlib.pyplot as plt
import numpy as np
import kafe2
from IPython.display import display, Math 

from tools.gamma_tools import fit_peak,fit_compton


background_peak = np.genfromtxt("./Messungen/Keine_probe.hst")
background_channel = np.arange(len(background_peak))
Strukturen im Natrium Sprektrum¶

Durch grobes hischauen lassen sich im Spktrum die folgende signifikante Werte in etwa ablesen:

Art Entsprechender Channel
1. Photopeak 1050
2. Photopeak 2850
1. Comptonkante 800
2. Comptonkante 2400
Rückstreupeak 450
In [ ]:
na_peak = np.genfromtxt("./Messungen/Na_probe.hst")
na_channel = np.arange(len(na_peak))

plt.bar(na_channel, na_peak-background_peak, width = 1)
plt.title('Histogramm des Präparats $_{11}^{22}$Na')
plt.xlabel('Channel')
plt.ylabel('Count')

plt.annotate('1. Photopeak', xy=(1050., 630.), xytext=(2500, 700.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Photopeak', xy=(2850., 40.), xytext=(2640, 150.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('1. Comptonkante', xy=(800., 100.), xytext=(1400, 300.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Comptonkante', xy=(2400., 20.), xytext=(2100, 200.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(450., 250.), xytext=(200, 400.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.show()
No description has been provided for this image
In [ ]:
na_peak_fit_1 = fit_peak(na_channel, na_peak, 1100,1300, label = '1. Photopeak fit')
na_peak_fit_2 = fit_peak(na_channel, na_peak, 2700,2980, label = '2. Photopeak fit')

na_ruekpeak_fit = fit_peak(na_channel, na_peak, 360,550, label = 'Rückstreuungpeak fit')

co_compton_fit_1 = fit_compton(na_channel, na_peak, 705, 865, label = '1. Compton fit')
na_compton_fit_2 = fit_compton(na_channel, na_peak, 2220, 2540, label = '2. Compton fit')
Warning: the cost function has been evaluated as infinite. The fit might not converge correctly.
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Strukturen im Cobalt Spektrum¶

Wie zuvor erwähnt, wurde die Messung von Cobalt über eine Dauer von $t=8\text{min}$ durchgeführt. Diese Zeit stimmt nicht mit der Messzeit unseren Untergrundes ($t=8\text{min}$) überein. Um hier die Korrektur vorzunehmen, muss zuerst das Untergrundspektrum zuerst zeitlich normiert werden. Dies wird im ersten Code block gemacht und danach werden diese normierte Werte von der Cobalt Messung abgezogen.

Durch grobes hischauen lassen sich im Spktrum die folgende signifikante Werte in etwa ablesen:

Art Entsprechender Channel
1. Photopeak 2650
2. Photopeak 3000
Comptonkante 2300
Rückstreupeak 570
In [ ]:
gesamtdauer = 6 # in min

# zeitintervall = gesamtdauer / len(background_peak) # Zeitintervall in Sekunden

# Zeitliche Normierung der Zählraten
normierte_zaehlraten = background_peak / gesamtdauer 

# Histogramm plotten
plt.figure(figsize=(10, 6))
plt.bar(range(len(normierte_zaehlraten)), normierte_zaehlraten, width=0.8, color='blue', alpha=1)
plt.xlabel('Bin')
plt.ylabel(rf'Normierte Zählrate $\left[\frac{{Zählungen}}{{min}}\right]$')
plt.title('Zeitlich normiertes Histogramm')
plt.grid(True)
plt.show()
No description has been provided for this image
In [ ]:
co_peak = np.genfromtxt("./Messungen/Co_probe.hst")
co_channel = np.arange(len(co_peak))

plt.bar(co_channel, co_peak-(normierte_zaehlraten*8), width = 1)
plt.title('Histogramm des Präparats $_{27}^{60}$Co')
plt.xlabel('Channel')
plt.ylabel('Count')

plt.annotate('1. Photopeak', xy=(2650., 600.), xytext=(2400, 900.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Photopeak', xy=(3000., 500.), xytext=(2640, 800.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Comptonkante', xy=(2150., 360.), xytext=(1700,720.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(570., 960.), xytext=(1200, 900.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.show()
No description has been provided for this image
In [ ]:
co_peak_fit_1 = fit_peak(co_channel, co_peak, 2505,2725, label = '1. Photopeak fit')
co_peak_fit_2 = fit_peak(co_channel, co_peak, 2830,3100, label = '2. Photopeak fit')

co_ruekpeak_fit = fit_peak(co_channel, co_peak, 465,625, label = 'Rückstreuungpeak fit')

co_compton_fit = fit_compton(co_channel, co_peak, 1970, 2260, label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Strukturen im Caesium Spektrum¶

Durch grobes hischauen lassen sich im Spktrum die folgende signifikante Werte in etwa ablesen:

Art Entsprechender Channel
Photopeak 1500
Rückstreupeak 500
Comptonkante 1000
In [ ]:
cs_peak = np.genfromtxt("./Messungen/Cs_probe.hst")
cs_channel = np.arange(len(cs_peak))

plt.bar(cs_channel, cs_peak-background_peak, width = 1)
plt.title('Histogramm des Präparats $_{55}^{137}$Cs')
plt.xlabel('Channel')
plt.ylabel('Count')

plt.annotate('Photopeak', xy=(1500., 6800.), xytext=(2000, 6600.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Comptonkante', xy=(1000., 1600.), xytext=(2000,3000.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(500., 4800.), xytext=(200, 6000.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.show()
No description has been provided for this image
In [ ]:
cs_peak_fit = fit_peak(cs_channel, cs_peak, 1400,1600, label = 'Photopeak fit')
cs_ruekpeak_fit = fit_peak(cs_channel, cs_peak, 390,550, label = 'Rückstreuungpeak fit')
cs_compton_fit = fit_compton(cs_channel, cs_peak, 1000, 1200, label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Wie man oben aus den Plots entnehman kann, haben die abgeschätzte Werte relativ gut gepasst. Die Abschätzungen haben als gute Grundlage gedient, um die Intervalle für den Fit in erster näherung festzulegen.

Energie Plots der Präparate¶

Mithilfe der in Aufgabe 2.3 ermittelte Parametern zum bestimmung der Energien aus den Kanäle wird die folgende Funktion definiert.

code
# Funktion zur Umwandlung von Kanal zu Energie
def channel_to_energie(x,a=0.4605,b=-33):
    return a*x+b

Die somit errechnete Werte werden anschließend verwendet, um die Spektren in Abhängigkeit zur Energie abzubilden. Und auch deren signifikante Werte ablesen.

In [ ]:
def channel_to_energie(x,a=0.4605,b=-33):
    return a*x+b
Natrium¶
In [ ]:
plt.bar(channel_to_energie(na_channel), na_peak-background_peak, width = 1)
plt.title('Histogramm des Präparats $_{11}^{22}$Na')
plt.xlabel('Energie in $[keV]$')
plt.ylabel('Count')

plt.annotate('1. Photopeak', xy=(channel_to_energie(1050), 630.), xytext=(channel_to_energie(2500), 700.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Photopeak', xy=(channel_to_energie(2850), 40.), xytext=(channel_to_energie(2640), 150.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('1. Comptonkante', xy=(channel_to_energie(800), 100.), xytext=(channel_to_energie(1400), 300.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Comptonkante', xy=(channel_to_energie(2400), 20.), xytext=(channel_to_energie(2100), 200.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(channel_to_energie(450), 250.), xytext=(channel_to_energie(200), 400.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.show()
No description has been provided for this image
In [ ]:
na_peak_fit_1 = fit_peak(channel_to_energie(na_channel), na_peak, 470,550,xlabel=rf'Energie in $[keV]$' ,label = '1. Photopeak fit')
na_peak_fit_2 = fit_peak(channel_to_energie(na_channel), na_peak, 1220,1340,xlabel=rf'Energie in $[keV]$' , label = '2. Photopeak fit')

na_ruekpeak_fit = fit_peak(channel_to_energie(na_channel), na_peak, 150,195,xlabel=rf'Energie in $[keV]$' , label = 'Rückstreuungpeak fit')

co_compton_fit_1 = fit_compton(channel_to_energie(na_channel), na_peak, 230,350,xlabel=rf'Energie in $[keV]$' , label = '1. Compton fit')
na_compton_fit_2 = fit_compton(channel_to_energie(na_channel), na_peak, 925,1100,xlabel=rf'Energie in $[keV]$' , label = '2. Compton fit')
No description has been provided for this image
Warning: the cost function has been evaluated as infinite. The fit might not converge correctly.
No description has been provided for this image
Warning: the cost function has been evaluated as infinite. The fit might not converge correctly.
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Cobalt¶
In [ ]:
plt.bar(channel_to_energie(co_channel), co_peak-(normierte_zaehlraten*8), width = 1)
plt.title('Histogramm des Präparats $_{27}^{60}$Co')
plt.xlabel('Energie in $[keV]$')
plt.ylabel('Count')

plt.annotate('1. Photopeak', xy=(channel_to_energie(2650), 600.), xytext=(channel_to_energie(2400), 900.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('2. Photopeak', xy=(channel_to_energie(3000), 500.), xytext=(channel_to_energie(2640), 800.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Comptonkante', xy=(channel_to_energie(2150), 360.), xytext=(channel_to_energie(1700),720.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(channel_to_energie(570), 960.), xytext=(channel_to_energie(1200), 900.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))


plt.show()
No description has been provided for this image
In [ ]:
co_peak_fit_1 = fit_peak(channel_to_energie(co_channel), co_peak, 1120,1225,xlabel='Energie in $[keV]', label = '1. Photopeak fit')
co_peak_fit_2 = fit_peak(channel_to_energie(co_channel), co_peak, 1270,1400,xlabel='Energie in $[keV]', label = '2. Photopeak fit')

co_ruekpeak_fit = fit_peak(channel_to_energie(co_channel), co_peak,180,250,xlabel='Energie in $[keV]', label = 'Rückstreuungpeak fit')

co_compton_fit = fit_compton(channel_to_energie(co_channel), co_peak, 880,1010 ,xlabel='Energie in $[keV]', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Cäsium¶
In [ ]:
plt.bar(channel_to_energie(cs_channel), cs_peak-background_peak, width = 1)
plt.title('Histogramm des Präparats $_{55}^{137}$Cs')
plt.xlabel('Energie in $[keV]$')
plt.ylabel('Count')

plt.annotate('Photopeak', xy=(channel_to_energie(1500), 6800.), xytext=(channel_to_energie(2000), 6600.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Comptonkante', xy=(channel_to_energie(1000), 1600.), xytext=(channel_to_energie(2000),3000.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.annotate('Rückstreupeak', xy=(channel_to_energie(500), 4800.), xytext=(channel_to_energie(200), 6000.),
    arrowprops=dict(facecolor='black', shrink=0.1, width=0.2, headwidth=8., 
    headlength=8.))

plt.show()
No description has been provided for this image
In [ ]:
cs_peak_fit = fit_peak(channel_to_energie(cs_channel), cs_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
cs_ruekpeak_fit = fit_peak(channel_to_energie(cs_channel), cs_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
cs_compton_fit = fit_compton(channel_to_energie(cs_channel), cs_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Aufgabe 2.3: Energie-Kalibration des Detektors¶

  • Kalibieren Sie mit Hilfe der in Aufgabe 2.2 aufgezeichneten Spektren die Kanäle des MCA auf die Photonenergie $E_{\gamma}$.
  • Fügen Sie eine Darstellung der Kalibrationspunkte ins Protokoll ein und passen Sie ein entsprechendes Modell daran an.

Lösung:

Vorbereitung¶

An erster Linie sind die kanalnummern der einzelnen Peaks und sofern diese qualitativ gut erkennbar sind auch die Comptonkanten. Diese werden dann im nächsten Schritt ihre bekannten Energien zugeordnet.

Struktur Energie in $[keV]$ Kanalnummer
Peak Cäsium-137 661.7 1509
Peak Cobalt-60 1173.2 2619
Peak Cobalt-60 1332.5 2966
Peak Natrium-22 1274.5 2839

Abbildung 2.3.1 Messreihe der Kanäle

Auswertung¶

Die in Abbildung 2.3.1 zu findende Werte werden nun an einem linearem Modell gefittet um die regressionsgerade zu bestimmen. Dies wird im unten stehendem Code durchgeführt. Die Form des fits lautet: $$ E = a\cdot\text{Kanal}+b $$ wobei a und b die gesuchten Parameter des Fits sind.

In [ ]:
# Daten für Kanalnummern und entsprechende Energien
kanalnummern = np.array([1509, 2619, 2966, 2839])
energien = np.array([661.7, 1173.2, 1332, 1275.5])

# Fit-Funktion definieren (lineare Funktion: y = a * x + b)
def linear(x, a, b):
    return a * x + b

# Dataset erstellen
dataset = kafe2.XYContainer(x_data=kanalnummern,y_data= energien)
dataset.axis_labels=['Kanalnummer', 'Energie $[keV]$']
dataset.label='Regressionsgerade der Energie'

dataset.add_error(axis='x',err_val=10)
dataset.add_error(axis='y',err_val=0.5)

# Fit-Objekt erstellen
fit = kafe2.Fit(dataset, linear)

# Fit durchführen
fit.do_fit()
fit_result=kafe2.Plot([fit])

params =fit.parameter_values
param_errors=fit.parameter_errors

# Ergebnisse ausgeben
display(Math(rf'\text{{Für die Energiekalebrirung ergeben sich folgende Parameter: }} a=\left({params[0]:.04}\pm{param_errors[0]:.4f}\right) \text{{und b=}}\left({params[1]:.04f}\pm{param_errors[1]:.04f}\right)'))

# Fit-Ergebnisse plotten
fit_result.plot()
plt.show()
$\displaystyle \text{Für die Energiekalebrirung ergeben sich folgende Parameter: } a=\left(0.4605\pm0.0040\right) \text{und b=}\left(-32.9905\pm10.2439\right)$
No description has been provided for this image

Andhand der hohen $\chi^2$-Wahrscheinlichkeit, können diese Werte mit gutem gewissen übernommen werden.


Aufgabe 2.4: Relative Energie-Auflösung des Detektors¶

  • Bestimmen Sie mit Hilfe der in Aufgabe 2.2 aufgezeichneten Spektren die relative Energieauflösung des Detektors als Funktion von $E_{\gamma}$.
  • Fügen Sie eine Darstellung der bestimmten Messpunkte ins Protokoll ein und passen Sie ein entsprechendes Modell daran an.
  • Schätzen Sie basierend auf dieser Anpassung die erwartete Anzahl ausgeschlagener Elektronen $N_{\mathrm{e}}$ an der Photokathode des im Photodetektor verbauten Photomultipliers ab.

Lösung:

Vorbereitung¶

Zur bestimmung der Auflösung sind zuerst zwei Werte benötigt. Der Erwartungswert der Peaks $\mu$ und dessen Halbwertszeit. Diese wird wie folgt aus der Standardabweichung $\sigma$ berechnet $$ \text{FWHM} =2\sqrt{2\ln2}\sigma $$

Auswertung¶

Zuerst werden die $\mathrm{FWHM}$ der jeweiligen Präparate bestimmt.

In [ ]:
def FWHM_finder(sigma):
    return 2*np.sqrt(2*np.log(2))*sigma

na_peak_1_FWHM= FWHM_finder(19.59)
na_peak_2_FWHM= FWHM_finder(31.4)
co_peak_1_FWHM= FWHM_finder(28.36)
co_peak_2_FWHM= FWHM_finder(33.24)
cs_peak_FWHM= FWHM_finder(23.4)
In [ ]:
# Definieren der Modellfunktion
def aufloesung(E_gamma, A):
    return A / np.sqrt(E_gamma)

# Energie des Photons und die Energieauflösung
e_gamma= np.array([511,1275,1172,1333,661.7])
e_aufloesung= np.array([na_peak_1_FWHM,na_peak_2_FWHM,co_peak_1_FWHM,co_peak_2_FWHM,cs_peak_FWHM])
In [ ]:
e_dataset = kafe2.XYContainer(x_data=e_gamma,y_data= e_aufloesung)
e_dataset.axis_labels=['Energie des Photopeaks', 'Auflösung']
e_dataset.label='Regressionsgerade der Energie'

e_dataset.add_error(axis='x',err_val=10)
e_dataset.add_error(axis='y',err_val=1)

# Fit-Objekt erstellen
fit = kafe2.Fit(e_dataset, aufloesung)

# Fit durchführen
fit.do_fit()
fit_result=kafe2.Plot([fit])

params =fit.parameter_values
param_errors=fit.parameter_errors

# Ergebnisse ausgeben
display(Math(rf'\text{{Für die Energiekalebrirung ergeben sich folgende Parameter: }} a=\left({params[0]:.04}\pm{param_errors[0]:.4f}\right) '))

# Fit-Ergebnisse plotten
fit_result.plot()
plt.show()
$\displaystyle \text{Für die Energiekalebrirung ergeben sich folgende Parameter: } a=\left(1.968e+03\pm16.8633\right) $
No description has been provided for this image

An dem Fit ist schnell ersichtlich, dass die gefundene Parameter vollkommen falsch ist und daher wurde die Bestimmung von $N_e$ unterlassen.


Aufgabe 3: Detektorakzeptanz¶

Hinweise zu Aufgabe 3 finden in der Datei Hinweise-Versuchsdurchfuehrung.md.

  • Bestimmen Sie Rate aufgezeichneter Photonen für $_{\hphantom{0}55}^{137}\mathrm{Cs}$ bei fünf verschiedenen Abständen des Präparats von der Detektorstirnfläche.
  • Schätzen Sie ab und begründen Sie, ob eine Korrektur auf den unterliegenden Untergrund notwendig ist.
  • Schätzen Sie ab und begründen Sie, ob eine Korrektur des Detektors auf pile-up notwendig ist.
  • Fügen Sie eine Darstellung der bestimmten Messpunkte ins Protokoll ein und passen Sie ein entsprechendes Modell daran an.

Lösung:

Vorbereitung¶

Bei diesen Messungen ist der Abzug des Untergrundes von noch größerer Bedeutung.
Bei zunehmneder Entfernung wird die durchschnittliche Anzahl der ankommenden Photonen sinken, da $A\sim \frac1{d^2}$; hierbei handelt es sich sogar um eine quadratische Abhängigkeit! Dementsprechend wird bei großen Abständen der Untergrund die Messwerte dominieren und so treten Verfälschungen der Messwerte auf.

Dagegen ist gegen Pile-up keine Vorkehrung notwendig da wie bereits erwähnt, die zeitliche Auflösung des Detektors gut genug ist, dass dieser Effekt verschwindend gering Auftreten könnte.

Versuchsdurchführung¶

Das Präparat wird anfangs bei einem Abstand von $\sim 0\mathrm{mm}$ zum Detektor Deckel angebracht und es wird über eine Zeit von $t = 1\mathrm{min}$ danach wird diese sukzessive auf $\sim 10\mathrm{mm}$, $\sim 40\mathrm{mm}$, $\sim 90\mathrm{mm}$, $\sim 160\mathrm{mm}$ erhöht. Die Messdauer bleibt hier stehts gleich.

Dabei enstehen dann die folgende Abbildungen:

Werte bei dem Abstand 0

Abbildung 3.1: Messung bei dem Abstand $0 \mathrm{mm}$

Werte bei dem Abstand 10

Abbildung 3.2: Messung bei dem Abstand $10\mathrm{mm}$

Werte bei dem Abstand 40

Abbildung 3.3: Messung bei dem Abstand $40\mathrm{mm}$

Werte bei dem Abstand 90

Abbildung 3.4: Messung bei dem Abstand $90 \mathrm{mm}$

Werte bei dem Abstand 160

Abbildung 3.5: Messung bei dem Abstand $160 \mathrm{mm}$

Auswertung¶

Bereits an den Rohen Messwerten kann man bereits sehen, dass die Form des Spektrums beibehalten wird. Dies liegt daran, dass lediglich die Rate an ankommende Photonen abnimmt.
Außerdem ist ein intensives Rauchen bei größere Abstände (wie etwa bei dem Abstand von $160\mathrm{mm}$) zu erkennen. Beim Vergleichen der Raten mit dennen des Untergrundes wird der Grund ersichtlich. Es liegt daran, dass die beiden Raten in einem sehr vergleichbarem bereich sind.

Für das weitere Forgehen wird nun der Untergrund von den jeweiligen Spektren abgezogen.
Zuletzt werden auschließlich die Raten des Photopeaks, die Compton-Kante und des Rückstreupeaks zur weiteren verarbeitung verwendet.

Abstand $0\mathrm{mm}$¶
In [ ]:
h0_peak = np.genfromtxt("./Messungen/Casium_Weird-Heights/Höhe_0.hst")
h0_channel = np.arange(len(h0_peak))

plt.bar(channel_to_energie(h0_channel), h0_peak-(normierte_zaehlraten*1), width = 1)
plt.title(rf'Spektrum bei dem Abstand $0\mathrm{{mm}}$')
plt.xlabel('Energie')
plt.ylabel('Count')

plt.show()
No description has been provided for this image
In [ ]:
h0_peak_fit = fit_peak(channel_to_energie(h0_channel), h0_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
h0_ruekpeak_fit = fit_peak(channel_to_energie(h0_channel), h0_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
h0_compton_fit = fit_compton(channel_to_energie(h0_channel), h0_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Abstand $10\mathrm{mm}$¶
In [ ]:
h10_peak = np.genfromtxt("./Messungen/Casium_Weird-Heights/Höhe_10.hst")
h10_channel = np.arange(len(h10_peak))

plt.bar(channel_to_energie(h10_channel), h10_peak-(normierte_zaehlraten*1), width = 1)
plt.title(rf'Spektrum bei dem Abstand $10\mathrm{{mm}}$')
plt.xlabel('Energie')
plt.ylabel('Count')

plt.show()
No description has been provided for this image
In [ ]:
h10_peak_fit = fit_peak(channel_to_energie(h10_channel), h10_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
h10_ruekpeak_fit = fit_peak(channel_to_energie(h10_channel), h10_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
h10_compton_fit = fit_compton(channel_to_energie(h10_channel), h10_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Abstand $40\mathrm{mm}$¶
In [ ]:
h40_peak = np.genfromtxt("./Messungen/Casium_Weird-Heights/Höhe_40.hst")
h40_channel = np.arange(len(h40_peak))

plt.bar(channel_to_energie(h40_channel), h40_peak-(normierte_zaehlraten*1), width = 1)
plt.title(rf'Spektrum bei dem Abstand $40\mathrm{{mm}}$')
plt.xlabel('Energie')
plt.ylabel('Count')

plt.show()
No description has been provided for this image
In [ ]:
h40_peak_fit = fit_peak(channel_to_energie(h40_channel), h40_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
h40_ruekpeak_fit = fit_peak(channel_to_energie(h40_channel), h40_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
h40_compton_fit = fit_compton(channel_to_energie(h40_channel), h40_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Abstand $90\mathrm{mm}$¶
In [ ]:
h90_peak = np.genfromtxt("./Messungen/Casium_Weird-Heights/Höhe_90.hst")
h90_channel = np.arange(len(h90_peak))

plt.bar(channel_to_energie(h90_channel), h90_peak-(normierte_zaehlraten*1), width = 1)
plt.title(rf'Spektrum bei dem Abstand $90\mathrm{{mm}}$')
plt.xlabel('Energie')
plt.ylabel('Count')

plt.show()
No description has been provided for this image
In [ ]:
h90_peak_fit = fit_peak(channel_to_energie(h90_channel), h90_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
h90_ruekpeak_fit = fit_peak(channel_to_energie(h90_channel), h90_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
h90_compton_fit = fit_compton(channel_to_energie(h90_channel), h90_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
Warning: the cost function has been evaluated as infinite. The fit might not converge correctly.
No description has been provided for this image
Abstand $160\mathrm{mm}$¶
In [ ]:
h160_peak = np.genfromtxt("./Messungen/Casium_Weird-Heights/Höhe_160.hst")
h160_channel = np.arange(len(h160_peak))

plt.bar(channel_to_energie(h160_channel), h160_peak-(normierte_zaehlraten*1), width = 1)
plt.title(rf'Spektrum bei dem Abstand $160\mathrm{{mm}}$')
plt.xlabel('Energie')
plt.ylabel('Count')

plt.show()
No description has been provided for this image
In [ ]:
h160_peak_fit = fit_peak(channel_to_energie(h160_channel), h160_peak, 620,705,xlabel='Energie in$[keV]$', label = 'Photopeak fit')
h160_ruekpeak_fit = fit_peak(channel_to_energie(h160_channel), h160_peak, 140,220,xlabel='Energie in$[keV]$', label = 'Rückstreuungpeak fit')
h160_compton_fit = fit_compton(channel_to_energie(h160_channel), h160_peak, 420,500,xlabel='Energie in$[keV]$', label = 'Compton fit')
No description has been provided for this image
No description has been provided for this image
Warning: the cost function has been evaluated as infinite. The fit might not converge correctly.
No description has been provided for this image
Zu verwehdende Raten¶

Wie in der Vorbereitung vermutet, haben sich die Lagen der einzelnen Struckturen lediglich die Raten.
Dabei lassen sich dann folgende Raten ablesen.

Struktur Rate
Photopeak bei 0mm $\sim 1200$
Photopeak bei 10mm $\sim 560$
Photopeak bei 40mm $\sim 150$
Photopeak bei 90mm $\sim 45$
Photopeak bei 160mm $\sim 17$

Abbildung 3.6: Tabelle der Messwerte

Es wird nun ein Fit dieser Werte gemacht. An dieser Stelle ist wichtig zu erwähnen, dass es einen Offset zwischen dem tatsächlichen Detektor und die Strahlungsquelle. Im Model wird dies als "b" bezeichnet. Diese unterliegt auch der bedingung, dass sie nicht $< 0$ sein kann.

In [ ]:
# Daten für Kanalnummern und entsprechende Energien
Abstand = np.array([0, 1, 4,9,16]) # in cm
Rate = np.array([1200,560, 150,45,17])

# Fit-Funktion definieren (lineare Funktion: y = a * x + b)
def help(x, a, b):
    return a/((x+b)**2)

# Dataset erstellen
dataset = kafe2.XYContainer(x_data=Abstand,y_data=Rate)
dataset.axis_labels=['Abstand', 'Rate']
dataset.label='Energieakzeptanz'

dataset.add_error(axis='x',err_val=0.2)
dataset.add_error(axis='y',err_val=20)



# Fit-Objekt erstellen
fit = kafe2.Fit(dataset, help)
fit.limit_parameter("b", lower=0)

# Fit durchführen
fit.do_fit()
fit_result=kafe2.Plot([fit])


# Fit-Ergebnisse plotten
fit_result.y_range=(0,2000)
fit_result.x_range=(-0.2,20)
fit_result.plot()
plt.show()
No description has been provided for this image